package controle;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import bean.Tarefa;


import dao.TarefaDAO;

public class GeraRelatorio {
		
	public HashMap<String,String> montaLinha( java.sql.Date data ){
		
		HashMap<String,String> mapa = new HashMap<String, String>();
		
		try {
			
		TarefaDAO dao = new TarefaDAO();
		List<Tarefa> lista_tarefas = new ArrayList<Tarefa>();
		lista_tarefas = dao.buscaData( data );		
			
		SimpleDateFormat formatter = new SimpleDateFormat("kk:mm"); 
		List<String> listaHoras = new ArrayList<String>();
		CalcHora calc = new CalcHora();
		int duracaoMin = 0;
			
		for ( Tarefa t : lista_tarefas ) {
	 
		duracaoMin += t.getMinutos();
		listaHoras.add(t.getHora_inicio());
		listaHoras.add(t.getHora_fim());
									
		}
		
		Date aux_menor = formatter.parse( "23:59");
		Date aux_maior = formatter.parse( "00:01");
		for (int i = 0; i < listaHoras.size(); i++ ) {
			
	        Date dataDaLista = formatter.parse( listaHoras.get(i) );
	        if( dataDaLista.getTime() < aux_menor.getTime() ){
	           	 aux_menor = dataDaLista;	        	 
	        }
	        
	        if( dataDaLista.getTime() > aux_maior.getTime() ){
	           	 aux_maior = dataDaLista;	        	 
	        }
		}		
                String duracao = calc.minParaHora( duracaoMin );	
                String HoraMaiorStr = formatter.format(aux_maior);
                String HoraMenorStr = formatter.format(aux_menor);
                String total = calc.diferenca( HoraMenorStr, HoraMaiorStr);
                String almoco = calc.diferenca( duracao, total);

                mapa.put("total", total);
                mapa.put("duracao", duracao);
                mapa.put("horaEntrada", HoraMenorStr);
                mapa.put("almoco", almoco);
                mapa.put("horaSaida", HoraMaiorStr);

                        } catch (ParseException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        } catch (SQLException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                        return mapa;		
	} 

	public void gerarArquivo(String texto, String header, String total, String nome){
		try {
			File arquivo = File.createTempFile( nome, ".rtf", 
                    new File(System.getProperty("user.dir")));
			if (arquivo.exists())
				arquivo.delete();
	        BufferedWriter out = new BufferedWriter(new FileWriter(arquivo));
	        out.write(header+texto+total);
	        out.close();

			java.awt.Desktop.getDesktop().open(arquivo);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	
}
